
#ifndef _ENTITY_
#define _ENTITY_

#include "ITickable.h"
#include "MoveInfo.h"
#include "Common.h"

class Entity : public ITickable
{
public:
	Entity();
	virtual ~Entity();

	virtual void Render();
	virtual void Tick();
	virtual void SetPosition(Position pos);
	virtual void SetPosition(int x, int y);

	// move the entity.  Returns false if the entity
	// cannot make the move, true if the move was made
	virtual bool Move(const MoveInfo &m);

	// triggered when this entity collides with another on the map.
	// this method being called on this entity means that we initiated
	// contact with the other entity.
	virtual void Collide(Entity * ent);

	virtual Position GetPosition();

	virtual bool ConsumesUponsEntry();

	virtual int GetCollideCost();

protected:
	Position m_pos;
};

#endif